package com.mashibing.api.util;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * @author SNA
 * @date 2025/8/15
 * @Description 校验手机号的合法性正则
 **/
public class PhoneFormatCheckUtil {

    // 国内手机号的正则表达式
    /* 1、Pattern.compile(String regex) 将给定的正则表达式字符串编译成一个 Pattern 对象,编译后的 Pattern 对象可以被重复
       使用，提高正则表达式的匹配效率。2、如果正则表达式语法不正确，会抛出 PatternSyntaxException 异常。
     */
    private final static Pattern CHINA_PATTERN = Pattern.compile("^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\\d{8}$");

    /**
     * 根据正则校验手机号是否合法
     * @param number
     * @return
     */
    public static boolean isChinaPhone(String number) {
        //1、使用 CHINA_PATTERN（已编译的手机号正则表达式）创建一个 Matcher 对象，该对象针对传入的 number 字符串
        Matcher matcher = CHINA_PATTERN.matcher(number);
        //2、调用 matcher.matches() 检查 number 是否完全符合手机号的格式要求。返回匹配结果（true 表示是合法的手机号，false 表示不是）
        return matcher.matches();
    }
}
